/*
 * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors.
 * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
 */

package org.jetbrains.kotlin.codegen.ir;

import com.intellij.testFramework.TestDataPath;
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.util.KtTestUtil;
import org.jetbrains.kotlin.test.TargetBackend;
import org.jetbrains.kotlin.test.TestMetadata;
import org.junit.runner.RunWith;

import java.io.File;
import java.util.regex.Pattern;

/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestGeneratorForCompilerTestsKt}. DO NOT MODIFY MANUALLY */
@SuppressWarnings("all")
@TestMetadata("compiler/testData/checkLocalVariablesTable")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
public class IrCheckLocalVariablesTableTestGenerated extends AbstractIrCheckLocalVariablesTableTest {
  private void runTest(String testDataFilePath) {
    KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
  }

  public void testAllFilesPresentInCheckLocalVariablesTable() {
    KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/checkLocalVariablesTable"), Pattern.compile("^(.+)\\.kt$"), null, true);
  }

  @TestMetadata("contextParameters.kt")
  public void testContextParameters() {
    runTest("compiler/testData/checkLocalVariablesTable/contextParameters.kt");
  }

  @TestMetadata("destructuringInLambdas.kt")
  public void testDestructuringInLambdas() {
    runTest("compiler/testData/checkLocalVariablesTable/destructuringInLambdas.kt");
  }

  @TestMetadata("inlineClassesExtension.kt")
  public void testInlineClassesExtension() {
    runTest("compiler/testData/checkLocalVariablesTable/inlineClassesExtension.kt");
  }

  @TestMetadata("inlineClassesMethod.kt")
  public void testInlineClassesMethod() {
    runTest("compiler/testData/checkLocalVariablesTable/inlineClassesMethod.kt");
  }

  @TestMetadata("inlineLambdaWithItParam.kt")
  public void testInlineLambdaWithItParam() {
    runTest("compiler/testData/checkLocalVariablesTable/inlineLambdaWithItParam.kt");
  }

  @TestMetadata("inlineLambdaWithParam.kt")
  public void testInlineLambdaWithParam() {
    runTest("compiler/testData/checkLocalVariablesTable/inlineLambdaWithParam.kt");
  }

  @TestMetadata("inlineSimple.kt")
  public void testInlineSimple() {
    runTest("compiler/testData/checkLocalVariablesTable/inlineSimple.kt");
  }

  @TestMetadata("inlineSimpleChain.kt")
  public void testInlineSimpleChain() {
    runTest("compiler/testData/checkLocalVariablesTable/inlineSimpleChain.kt");
  }

  @TestMetadata("itInLambda.kt")
  public void testItInLambda() {
    runTest("compiler/testData/checkLocalVariablesTable/itInLambda.kt");
  }

  @TestMetadata("itInReturnedLambda.kt")
  public void testItInReturnedLambda() {
    runTest("compiler/testData/checkLocalVariablesTable/itInReturnedLambda.kt");
  }

  @TestMetadata("kt11117.kt")
  public void testKt11117() {
    runTest("compiler/testData/checkLocalVariablesTable/kt11117.kt");
  }

  @TestMetadata("lambdaAsVar.kt")
  public void testLambdaAsVar() {
    runTest("compiler/testData/checkLocalVariablesTable/lambdaAsVar.kt");
  }

  @TestMetadata("multiFieldValueClassesExtension.kt")
  public void testMultiFieldValueClassesExtension() {
    runTest("compiler/testData/checkLocalVariablesTable/multiFieldValueClassesExtension.kt");
  }

  @TestMetadata("multiFieldValueClassesMethod.kt")
  public void testMultiFieldValueClassesMethod() {
    runTest("compiler/testData/checkLocalVariablesTable/multiFieldValueClassesMethod.kt");
  }

  @TestMetadata("objectInLocalPropertyDelegate.kt")
  public void testObjectInLocalPropertyDelegate() {
    runTest("compiler/testData/checkLocalVariablesTable/objectInLocalPropertyDelegate.kt");
  }

  @TestMetadata("suspendFunctionDeadVariables.kt")
  public void testSuspendFunctionDeadVariables() {
    runTest("compiler/testData/checkLocalVariablesTable/suspendFunctionDeadVariables.kt");
  }

  @TestMetadata("underscoreNames.kt")
  public void testUnderscoreNames() {
    runTest("compiler/testData/checkLocalVariablesTable/underscoreNames.kt");
  }

  @TestMetadata("valueClassesEscaping.kt")
  public void testValueClassesEscaping() {
    runTest("compiler/testData/checkLocalVariablesTable/valueClassesEscaping.kt");
  }

  @TestMetadata("compiler/testData/checkLocalVariablesTable/parametersInSuspendLambda")
  @TestDataPath("$PROJECT_ROOT")
  @RunWith(JUnit3RunnerWithInners.class)
  public static class ParametersInSuspendLambda extends AbstractIrCheckLocalVariablesTableTest {
    private void runTest(String testDataFilePath) {
      KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath);
    }

    public void testAllFilesPresentInParametersInSuspendLambda() {
      KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/checkLocalVariablesTable/parametersInSuspendLambda"), Pattern.compile("^(.+)\\.kt$"), null, true);
    }

    @TestMetadata("dataClass.kt")
    public void testDataClass() {
      runTest("compiler/testData/checkLocalVariablesTable/parametersInSuspendLambda/dataClass.kt");
    }

    @TestMetadata("extensionComponents.kt")
    public void testExtensionComponents() {
      runTest("compiler/testData/checkLocalVariablesTable/parametersInSuspendLambda/extensionComponents.kt");
    }

    @TestMetadata("generic.kt")
    public void testGeneric() {
      runTest("compiler/testData/checkLocalVariablesTable/parametersInSuspendLambda/generic.kt");
    }

    @TestMetadata("inline.kt")
    public void testInline() {
      runTest("compiler/testData/checkLocalVariablesTable/parametersInSuspendLambda/inline.kt");
    }

    @TestMetadata("otherParameters.kt")
    public void testOtherParameters() {
      runTest("compiler/testData/checkLocalVariablesTable/parametersInSuspendLambda/otherParameters.kt");
    }

    @TestMetadata("parameters.kt")
    public void testParameters() {
      runTest("compiler/testData/checkLocalVariablesTable/parametersInSuspendLambda/parameters.kt");
    }
  }
}
